home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 1995 March / SOFM_Mar1995.bin / mac / SRI / General Interest / Programming / J / Examples / nts.js < prev    next >
Encoding:
Text File  |  1993-12-02  |  1.9 KB  |  71 lines  |  [TEXT/????]

  1.    NB. date and time utilities
  2.    NB.
  3.    NB.   calendar          calendar for year {months}
  4.    NB.   togreg            to gregorian date
  5.    NB.   tojul             to julian day number
  6.    NB.   tstamp            formatted timestamp
  7.    
  8.    SCRIPTNAMES=:  'calendar togreg tojul tstamp'
  9.    
  10.    NB. calendar
  11.    calendar=: 0 : 0
  12. NB. calendar for year, as 12 element list
  13. NB. argument is one or more numbers: year, months
  14. b=. y+-/<.4 100 400%~<:y=. {.y.
  15. r=. 28+3,(~:/0=4 100 400|y),10$5$3 2
  16. r=. ,(-7|b+0,+/\}:r)|."0 1 r(]&>:*"1>/)i.42
  17. m=. m,(0=#m=. <:}.y.)#i.12        
  18. h=. 'JanFebMarAprMayJunJulAugSepOctNovDec'
  19. h=. ' Su Mo Tu We Th Fr Sa',:"1~_3(_12&{.)\h
  20. <"2 m{h,"2[12 6 21$,>(<'') ((r=0)#i.#r)} <"1 [ 3":,.r
  21. )
  22.    
  23.    NB. togreg
  24.    togreg=: 0 : 0
  25. 0 togreg y.
  26. :
  27. NB. converts day numbers to dates, converse <tojul>
  28. NB. y. = day numbers        
  29. NB. x. = optional:                                       
  30. NB.   0 - result in form <yyyy mm dd> (default)
  31. NB.   1 - result in form <yyyymmdd>
  32. s=. $y.                          
  33. y.=. 657377.75 +, y.
  34. d=. <. y. - 36524.25 * c=. <. y. % 36524.25
  35. d=. <.1.75 + d - 365.25 * y=. <. (d+0.75) % 365.25
  36. r=. (1+12|m+2) ,: <. 0.41+d-30.6* m=. <. (d-0.59) % 30.6
  37. r=. s $ |: ((c*100)+y+m >: 10) ,r [ $.=. x.#$. 
  38. 100 #. r
  39. )
  40.    
  41.    NB. tojul
  42.    tojul=: 0 : 0
  43. 0 tojul y.
  44. :
  45. NB. convert dates to day numbers, converse <togreg>
  46. NB. y. = dates 
  47. NB. x. = optional:
  48. NB.   0 - dates in form <yyyy mm dd> (default)
  49. NB.   1 - dates in form <yyyymmdd>
  50. NB. 0 = tojul 1800 1 1, or earlier
  51. $.=. (-.x.) }. $.
  52. y.=. 0 100 100 #: y.
  53. y.=. ((*/r=. }: $y.) , {:$y.) $,y.
  54. 'ymd'=. <"_1 |: y.
  55. y=. 0 100 #: y - m <: 2
  56. n=. +/ |: <. 36524.25 365.25 *"1 y
  57. n=. n + <. 0.41 + 0 30.6 #. (12 | m-3),"0 d
  58. 0 >. r $ n - 657378
  59. )                                
  60.    
  61.    NB. tstamp
  62.    tstamp=: 0 : 0
  63. y=. >(0=#y.){y.;6!:0 ''
  64. 'ymdhns'=. 6 {. y
  65. f=. _3&{.@('0'&,@(":@]))
  66. mth=. _3[\'   JanFebMarAprMayJunJulAugSepOctNovDec'
  67. t=. ;f&.>100|y,h,n,s
  68. t=. '  ::' 0 3 6 9}t
  69. (2":d),' ',(m{mth),t
  70. )
  71.